﻿Imports SIAVU.Dominio

Namespace Presentacion

    Partial Public Class PreProgramacion
        Inherits System.Web.UI.Page

        Private Sub PreProgramacion_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            SetearControles()
        End Sub

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not Page.IsPostBack AndAlso Not Page.IsCallback Then
                CargarCheckFechasVariables()
            End If
            '//Valido que este dentro del rango de fechas que se permite modificar la preprogramacion
            Session("UsuarioIDucMiProgramacion") = Session("UsuarioID")
            If Not (Me.PlazoPreprogramacion.VerificarVigencia()) Then
                Session("MensajeInformacion") = "Ha vencido el plazo para realizar modificaciones sobre su preprogramación para el período " + _
                                    Date.Now.Date.Month.ToString() + "/" + Date.Now.Date.Year.ToString() + _
                                    ". Por favor, intente nuevamente en días posteriores."
                Response.Redirect("MenuPrincipal.aspx", False)
            End If
        End Sub

#Region "Propiedades"

        Public ReadOnly Property PlazoPreprogramacion() As Dominio.Plazo
            Get
                If (Session("PlazoPreprogramacion") Is Nothing) Then
                    '//Obtengo el plazo de preprogramacion que corresponde al día de la fecha (el mes siguiente)
                    Dim oPlazo As New Dominio.Plazo
                    Session("PlazoPreprogramacion") = oPlazo.getByFecha(Date.Now.Date.AddMonths(1))
                End If

                Return Session("PlazoPreprogramacion")
            End Get
        End Property

#End Region

#Region "Eventos"

        Protected Sub bGuardarSeleccion_Click(ByVal sender As Object, ByVal e As EventArgs) Handles bGuardarSeleccion.Click
            Try
                Page.Validate()
                If (Page.IsValid) Then
                    '//Si pasa las validaciones intento guardar la preprogramacion
                    Dim oUsuario As New Usuario
                    oUsuario.UsuarioID = Session("UsuarioID")
                    ucMiProgramacion1.AsignarActividadIDCero()
                    If (oUsuario.ActualizarActividadesProgramacion(ucMiProgramacion1.ListaActividades, _
                                                               ucMiProgramacion1.ListaActividadesEliminadas, _
                                                               CDate(ucMiProgramacion1.PeriodoProgramacion + "/01"), _
                                                               chkFechasVariables.Checked, _
                                                               ETipoProgramacion.PreProgramacion)) Then

                        ucMiProgramacion1.LimpiarSession()
                        Session("MensajeInformacion") = "La PreProgramación del usuario se ha guardado de manera exitosa"
                        Response.Redirect("MenuPrincipal.aspx", False)
                    End If
                End If

            Catch ex As Exception
                Response.Redirect("_NotificacionDeError.aspx")
            End Try
        End Sub

#End Region

#Region "Metodos"

        Private Sub CargarCheckFechasVariables()
            Dim oUsuario As New Usuario
            Try
                oUsuario.getByID(Session("UsuarioID"))
                Dim oProgramacion As Programacion
                oProgramacion = oUsuario.getProgramacionByPeriodo(CDate(ucMiProgramacion1.PeriodoProgramacion + "/01"), ETipoProgramacion.PreProgramacion)
                If oProgramacion IsNot Nothing Then
                    Me.chkFechasVariables.Checked = oProgramacion.FechasVariables
                End If
            Catch ex As Exception
                'TODO mandar a pagina de error
            Finally
                oUsuario = Nothing
            End Try
        End Sub

        Public Sub SetearControles()
            '//Inicializo propiedades en ambos controles
            Dim strPeriodo As String = Date.Now.AddMonths(+1).Year.ToString() + "/" + Date.Now.AddMonths(+1).Month.ToString()
            ucMiProgramacion1.NombreParaMostrar = "Mi Programación"
            ucMiProgramacion1.TipoMiProgramacion = ETipoProgramacion.PreProgramacion
            ucMiProgramacion1.PeriodoProgramacion = strPeriodo
            ucPostas1.Periodo = strPeriodo
        End Sub

#End Region

#Region "Validaciones"

        Protected Sub cvGuardar_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvGuardar.ServerValidate
            If (ucMiProgramacion1.ListaActividades Is Nothing AndAlso _
            ucMiProgramacion1.ListaActividadesEliminadas Is Nothing) Then
                args.IsValid = False
                cvGuardar.ErrorMessage = "Debe realizar modificaciones para poder continuar"
            End If
        End Sub

#End Region

    End Class

End Namespace